题意:给你$3$个数字$n,t,k;$分别表示一棵树有$n$个点; 这棵树的深度$t$,以及叶子节点的个数$k;$给你树的每层节点个数; 让你画出这么一棵树; 输出它的$n-1$条边;
首先计算这样的树最多与最少能有几个叶子节点,如果$k$不在这个范围内,则输出$-1,return 0;$
然后我们钦定同一深度的点都指向同一个父亲 这样叶子节点最多,并且计算一下我们需要消除的叶子节点数量$=n-t-k$。
然后从下到上进行调整,每次将当前层节点指向的父亲转移成上一层每个节点(如果当前层节点数大于上一层节点数,则多余的挤在一起)枚举用两个指针,一个指针指向当前层,另一个指针指向上一层,同时$+1$,如果一个指针指向了尽头就跳到上一层,如果消除的叶子节点数$=$我们需要消除的叶子节点数量则退出。
然后输出即可
1 |
|